package eva.savant.businessobject.mt;

import eva.savant.businessobject.vt.VentaDetalle;
import eva.savant.businessobject.vt.Precio;
import eva.savant.businessobject.vt.PedidoDetalle;
import eva.savant.businessobject.cm.SolicitudDetalle;
import eva.savant.businessobject.cm.CompraDetalle;
import eva.savant.businessobject.gl.Tipo;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Collection;

@Table(name="MT_MATERIAL")
@javax.persistence.Entity(name = "mt.Material")
public class Material extends eva.savant.businessobject.Entity {

    @Id
    @Column(name = "ID_MATERIAL", length = 8, nullable = false)
    private String id; //ID Material

    @ManyToOne
    @JoinColumn(name = "ID_JERARQUIA", nullable = true)
    private Jerarquia jerarquia; //ID Jerarquia

    @ManyToOne
    @JoinColumn(name = "ID_TIPO_VOLUMEN", nullable = true)
    private Tipo tipo_volumen; //ID Unidad de Volumen

    @ManyToOne
    @JoinColumn(name = "ID_TIPO_UNIDAD", nullable = true)
    private Tipo tipo_unidad; //ID Unidad de Medida Base

    @ManyToOne
    @JoinColumn(name = "ID_TIPO_GRUPO", nullable = true)
    private Tipo tipo_grupo; //ID Grupo

    @ManyToOne
    @JoinColumn(name = "ID_TIPO_CLASE", nullable = true)
    private Tipo tipo_clase; //ID Clase de Material

    @ManyToOne
    @JoinColumn(name = "ID_TIPO_PESO", nullable = true)
    private Tipo tipo_peso; //ID Unidad de Peso

    @Basic
    @Column(name = "CODIGO", length = 6, nullable = false)
    private String codigo; //Codigo

    @Basic
    @Column(name = "RAPIDO", length = 10, nullable = false)
    private Integer rapido; //Codigo Rapido

    @Basic
    @Column(name = "NOMBRE", length = 50, nullable = false)
    private String nombre; //Nombre

    @Basic
    @Column(name = "CORTO", length = 15, nullable = true)
    private String corto; //Nombre Corto

    @Basic
    @Column(name = "BARRAS", length = 30, nullable = true)
    private String barras; //Codigo de Barras

    @Basic
    @Column(name = "VALUACION", length = 10, nullable = true)
    private String valuacion; //Metodo Valuacion { PEPS  UEPS  PROMEDIO }

    @Basic
    @Column(name = "VOLUMEN", length = 14, precision = 4, nullable = true)
    private BigDecimal volumen; //Volumen

    @Basic
    @Column(name = "PESO_NETO", length = 14, precision = 4, nullable = true)
    private BigDecimal pesoNeto; //Peso Neto

    @Basic
    @Column(name = "PESO_BRUTO", length = 14, precision = 4, nullable = true)
    private BigDecimal pesoBruto; //Peso Bruto

    @OneToMany
    (mappedBy = "material")
    private Collection<CompraDetalle> lsCompraDetalle;

    @OneToMany
    (mappedBy = "material")
    private Collection<SolicitudDetalle> lsSolicitudDetalle;

    @OneToMany
    (mappedBy = "material")
    private Collection<Inventario> lsInventario;

    @OneToMany
    (mappedBy = "material")
    private Collection<Kardex> lsKardex;

    @OneToMany
    (mappedBy = "material")
    private Collection<PedidoDetalle> lsPedidoDetalle;

    @OneToMany
    (mappedBy = "material")
    private Collection<Precio> lsPrecio;

    @OneToMany
    (mappedBy = "material")
    private Collection<VentaDetalle> lsVentaDetalle;


    public Material(String id, Jerarquia jerarquia, Tipo tipo_volumen, Tipo tipo_unidad, Tipo tipo_grupo, Tipo tipo_clase, Tipo tipo_peso, String codigo, Integer rapido, String nombre, String corto, String barras, String valuacion, BigDecimal volumen, BigDecimal pesoNeto, BigDecimal pesoBruto, Integer operacionId, String sociedadId, Integer usuarioId) {

        this.id= id;

        this.jerarquia= jerarquia;

        this.tipo_volumen= tipo_volumen;

        this.tipo_unidad= tipo_unidad;

        this.tipo_grupo= tipo_grupo;

        this.tipo_clase= tipo_clase;

        this.tipo_peso= tipo_peso;

        this.codigo= codigo;

        this.rapido= rapido;

        this.nombre= nombre;

        this.corto= corto;

        this.barras= barras;

        this.valuacion= valuacion;

        this.volumen= volumen;

        this.pesoNeto= pesoNeto;

        this.pesoBruto= pesoBruto;

        this.operacionId= operacionId;

        this.sociedadId= sociedadId;

        this.usuarioId= usuarioId;

    }

    public Material() {

    }


    public String getId() {
    
        return id;
    }
    
    public void setId(String id) {
    
        this.id = id;
    }

    public Jerarquia getJerarquia() {
    
        return jerarquia;
    }
    
    public void setJerarquia(Jerarquia jerarquia) {
    
        this.jerarquia = jerarquia;
    }

    public Tipo getTipo_volumen() {
    
        return tipo_volumen;
    }
    
    public void setTipo_volumen(Tipo tipo_volumen) {
    
        this.tipo_volumen = tipo_volumen;
    }

    public Tipo getTipo_unidad() {
    
        return tipo_unidad;
    }
    
    public void setTipo_unidad(Tipo tipo_unidad) {
    
        this.tipo_unidad = tipo_unidad;
    }

    public Tipo getTipo_grupo() {
    
        return tipo_grupo;
    }
    
    public void setTipo_grupo(Tipo tipo_grupo) {
    
        this.tipo_grupo = tipo_grupo;
    }

    public Tipo getTipo_clase() {
    
        return tipo_clase;
    }
    
    public void setTipo_clase(Tipo tipo_clase) {
    
        this.tipo_clase = tipo_clase;
    }

    public Tipo getTipo_peso() {
    
        return tipo_peso;
    }
    
    public void setTipo_peso(Tipo tipo_peso) {
    
        this.tipo_peso = tipo_peso;
    }

    public String getCodigo() {
    
        return codigo;
    }
    
    public void setCodigo(String codigo) {
    
        this.codigo = codigo;
    }

    public Integer getRapido() {
    
        return rapido;
    }
    
    public void setRapido(Integer rapido) {
    
        this.rapido = rapido;
    }

    public String getNombre() {
    
        return nombre;
    }
    
    public void setNombre(String nombre) {
    
        this.nombre = nombre;
    }

    public String getCorto() {
    
        return corto;
    }
    
    public void setCorto(String corto) {
    
        this.corto = corto;
    }

    public String getBarras() {
    
        return barras;
    }
    
    public void setBarras(String barras) {
    
        this.barras = barras;
    }

    public String getValuacion() {
    
        return valuacion;
    }
    
    public void setValuacion(String valuacion) {
    
        this.valuacion = valuacion;
    }

    public BigDecimal getVolumen() {
    
        return volumen;
    }
    
    public void setVolumen(BigDecimal volumen) {
    
        this.volumen = volumen;
    }

    public BigDecimal getPesoNeto() {
    
        return pesoNeto;
    }
    
    public void setPesoNeto(BigDecimal pesoNeto) {
    
        this.pesoNeto = pesoNeto;
    }

    public BigDecimal getPesoBruto() {
    
        return pesoBruto;
    }
    
    public void setPesoBruto(BigDecimal pesoBruto) {
    
        this.pesoBruto = pesoBruto;
    }

    public Collection<CompraDetalle> getLsCompraDetalle() {
    
        return lsCompraDetalle;
    }
    
    public void setLsCompraDetalle(Collection<CompraDetalle> lsCompraDetalle) {
    
        this.lsCompraDetalle = lsCompraDetalle;
    }

    public Collection<SolicitudDetalle> getLsSolicitudDetalle() {
    
        return lsSolicitudDetalle;
    }
    
    public void setLsSolicitudDetalle(Collection<SolicitudDetalle> lsSolicitudDetalle) {
    
        this.lsSolicitudDetalle = lsSolicitudDetalle;
    }

    public Collection<Inventario> getLsInventario() {
    
        return lsInventario;
    }
    
    public void setLsInventario(Collection<Inventario> lsInventario) {
    
        this.lsInventario = lsInventario;
    }

    public Collection<Kardex> getLsKardex() {
    
        return lsKardex;
    }
    
    public void setLsKardex(Collection<Kardex> lsKardex) {
    
        this.lsKardex = lsKardex;
    }

    public Collection<PedidoDetalle> getLsPedidoDetalle() {
    
        return lsPedidoDetalle;
    }
    
    public void setLsPedidoDetalle(Collection<PedidoDetalle> lsPedidoDetalle) {
    
        this.lsPedidoDetalle = lsPedidoDetalle;
    }

    public Collection<Precio> getLsPrecio() {
    
        return lsPrecio;
    }
    
    public void setLsPrecio(Collection<Precio> lsPrecio) {
    
        this.lsPrecio = lsPrecio;
    }

    public Collection<VentaDetalle> getLsVentaDetalle() {
    
        return lsVentaDetalle;
    }
    
    public void setLsVentaDetalle(Collection<VentaDetalle> lsVentaDetalle) {
    
        this.lsVentaDetalle = lsVentaDetalle;
    }

}
